package org.stevewinfield.suja.idk; import org.apache.commons.io.FileUtils; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; import java.util.concurrent.ConcurrentHashMap; public class Translations { public static String getTranslation(final String key, Object... args) { if (translations.containsKey(key)) { return String.format(translations.get(key), args); } return String.format(defaultTranslations.get(key), args); } public static void loadTranslations() throws IOException { defaultTranslations = new ConcurrentHashMap<>(); Properties defaultTranslationsPropertiesFile = new Properties(); defaultTranslationsPropertiesFile.load(Bootloader.class.getResourceAsStream("/translations.properties")); for (String key : defaultTranslationsPropertiesFile.stringPropertyNames()) { String value = defaultTranslationsPropertiesFile.getProperty(key); defaultTranslations.put(key, value); } File translationsFile = new File("translations.properties"); if (!translationsFile.exists()) { FileUtils.copyURLToFile(Bootloader.class.getResource("/translations.properties"), translationsFile); } translations = new ConcurrentHashMap<>(); Properties translationsPropertiesFile = new Properties(); translationsPropertiesFile.load(new FileInputStream("translations.properties")); for (String key : translationsPropertiesFile.stringPropertyNames()) { String value = translationsPropertiesFile.getProperty(key); translations.put(key, value); } } public static int getCount() { return translations.size(); } private static ConcurrentHashMap<String, String> translations; private static ConcurrentHashMap<String, String> defaultTranslations; }